package one.undefined.Listeners.Interactions;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

import static java.lang.Integer.parseInt;


public class PurgeCommand extends ListenerAdapter {
    @Override
    public void onSlashCommand(SlashCommandEvent event)
    {
        if(!event.getName().equals("purge")) return;

        Guild guild = event.getGuild();

        if(!event.getMember().hasPermission(Permission.MESSAGE_MANAGE)) {
            event.reply("Вы не имеете прав на управление сообщениями.")
                .setEphemeral(true)
                .queue();
            return;
        };
        if(!guild.getSelfMember().hasPermission(Permission.MESSAGE_MANAGE)) {
            event.reply("У меня нет прав на управление сообщениями! Обратитесь к администрации сервера.")
                .setEphemeral(true)
                .queue();
            return;
        };

        if(event.getOption("count").getAsLong() < 1) {
            event.reply("Укажите число равное или же больше 1.")
                .setEphemeral(true)
                .queue();
        }

        if(event.getOption("count").getAsLong() > 100) {
            event.reply("Укажите число меньше 100.")
                    .setEphemeral(true)
                    .queue();
        }

        event.getChannel().getIterableHistory()
                .takeAsync(parseInt(event.getOption("count").getAsString()))
                .thenApply(list -> {
                    if(list.size() < 1) {
                        event.reply("Не удалось получить сообщения!")
                            .setEphemeral(true)
                            .queue();
                    }
                    event.getChannel().purgeMessages(list);
                    event.reply("Вы успешно отчистили `" + list.size() + "` сообщений.").queue();
                    return null;
                });

    }
}
